package SourceCode.FunctionInterface.code;

import java.util.Objects;
import java.util.function.BiFunction;
import java.util.function.Function;

/**
 * @Description 接受两个参数返回一个参数
 * @Author bloodcolding
 * @Date 2021/01/23 5:15 PM
 */
public class ImpBiFunction<T, U, R> implements BiFunction<T, U, R> {

    /**
     * 接受两个参数，返回一个参数
     *
     * @param t
     * @param u
     * @return
     */
    @Override
    public R apply(T t, U u) {
        return null;
    }

    /**
     * 此函数apply()运行完毕之后，进行Function的apply()；
     *
     * @param after
     * @param <V>
     * @return
     */
    @Override
    public <V> BiFunction<T, U, V> andThen(Function<? super R, ? extends V> after) {
        Objects.requireNonNull(after);
        return (T t, U u) -> after.apply(apply(t, u));
    }
}
